Conventional software packages often require access to memory, databases, or other applications to perform their designed function. For example, a user may access a software package that may require a particular type of data conversion. One way to enable the software package to perform the conversion is to program the conversion directly into the software package. Recently, however, there has been a trend where the user accesses the software package (referred to as an application) and the software package, in turn, accesses another software package (referred to as a service program) when the application requires a complex functionality. Instead of programming the application to perform the complex functionality itself, the application is programmed to access other service programs designed specifically to perform the requested functionality.
FIGS. 1 and 2 show conventional systems for assigning applications that require voice recognition services to voice recognition servers that can handle those requests. One of skill in the art would recognize that the prior art systems in FIGS. 1 and 2 have broad application for accessing other complex functionalities beyond simply voice recognition services. Voice recognition services, however, are a common application. Moreover, the prior art system in FIG. 2 is specialized for voice recognition applications constituting one common type of application that requires multiplexing service programs
Taken in more detail, FIG. 1 shows a conventional system 100. Conventional system 100 includes a plurality of voice-processing modules 102 and a plurality of telephone lines 104 assigned to each voice-processing module 102. Voice-processing modules 102 further include a plurality of clients 106 and a voice-processing server 108. System 100 uses a “round robin” strategy for assigning voice recognition requests to voice recognition servers. In this architecture, one of the clients 106 in voice-processing module 102 receives speech utterances via one of the incoming telephone lines 104. The client 106 that receives the speech utterance is pre-assigned to a voice-processing server 108.
System 100 implements a “round robin” strategy because system 100 assigns calls as the calls arrive to the next voice-processing module 102 in line regardless of the load currently on that voice-processing module. This prior art system 100 does not account for any variance in use dependent upon system loading, or message type. Such a system can result in a loss of efficiency owing to ineffective workflow assignment. This prior art system also does not account for the differing capabilities of particular servers.
Recognizing the deficiency in the simple round-robin system described in FIG. 1, FIG. 2 shows another existing approach to multiplexing service programs in voice recognition applications that attempts to cure this defect. In this architecture 200, at least one application 210 requires a service from one of the plurality of speech recognition servers 218 (i.e., service programs). In order to obtain access to the one of the servers 218, the application 210 requiring the server 218 interacts with a mediator 206 over bus 240. The mediator 206 controls various standard telephony aspects of the application such as detecting calls and identifying break points in speech (“end-pointing”). The mediator 206 also interacts with a resource manager 214 over bus 242. The primary task of the resource manager 214 is to identify an appropriate instance of a speech recognition server 218 for a given application request. In other words, mediator 206 receives a request from application 210 requesting access to one of the servers 218. Mediator 206 communicates this request to the resource manager 214, which provides access to one of the servers 218.
Based on the type of message and specifically the resources that will be required to fulfill that request, along with the then current loading of the servers 218 in architecture 200, the resource manager 214 determines which instance of speech recognition server 218 is most appropriate. When examining the type of message, the resource manager 214 may evaluate the grammar needed to process the utterance, the processing capabilities of each speech recognition server 218 for the grammar in question and the amount of free processing capacity of each speech recognition server 218. Once a speech recognition server 218 is assigned for a given call, the resource manager 214 communicates with the speech recognition server 218 via a bus 246 and the application 210 requiring server 218 communicates with server 218 by using bus 240 to communicate with the mediator 206 which in turn uses bus 244 to communicate with the server 218.
This prior art architecture does not account for multiple services other than multiple services of the same type, i.e., speech recognition servers 218. Speech recognition servers 218 are the only resource that is multiplexed. In other words, this prior art system does not attempt to multiplex a plurality of different services for a single application. In this example, the prior art system multiplexes a number of speech recognition servers 218, but does not attempt to multiplex a number of speech recognition servers 218 with, for example, a number of imaging servers, other speech application related servers, or other non-speech application servers.
In addition, the connections between system sub-components are fixed. These connections include bus 240 between applications 210 and mediators 206, bus 242 between mediators 206 and resource managers 214, bus 244 between mediators 206 and speech recognition servers 218, and bus 246 between resource managers 214 and speech recognition servers 218. These connections are not scalable to large application spaces and will not be practical over distributed, non-local networks.
Moreover, the resources to be allocated are not dynamic—a fixed set of resources is defined in the initial configuration. The fixed connections require either a low system throughput or a high bandwidth. Furthermore, the prior art systems, and in particular speech recognition systems, do not account for load balancing or dynamically allocating applications 210.
This prior art system also does not account for types of resources other than grammar type, speech recognition server capabilities with a specific grammar and then current processing capacities. There are a wide variety of other resources that may be important for load balancing and dynamic system configuration, depending on the application and the environment in which it operates.
Conventional telephony is switching from a circuit-switched based network to a packet-based network. Open System Interconnection (“OSI”) is one particularly useful digital data communication protocol that supports “host to host” data transfers between co-operating applications on the differing hosts. (Note that while the protocol is defined between separate hosts, the co-operating applications can reside on the same host). Conventionally, however, the packet-based networks for Voice over Internet Protocol (VoIP) are designed to function using traditional Transmission Control Protocol/Internet Protocol (“TCP/IP”). The TCP/IP does not map to an OSI system. In particular, the packet-based, conventional TCP/IP does not adequately define sessions (call control) or presentation of the real-time transport for the multiple medias that need to be transmitted.
Therefore, it would be desirable to develop an architecture that is capable of multiplexing multiple servers and addresses these and other problems identified in the prior art.